home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 2
/
Aminet AMIGA CDROM (1994)(Walnut Creek)[Feb 1994][W.O. 44790-1].iso
/
Aminet
/
dev
/
asm
/
TBSource.lha
/
SimCC
/
SimCCheat.S
< prev
next >
Wrap
Text File
|
1993-07-02
|
26KB
|
1,285 lines
***********************************************
* *
* (C)opyright 1991-92 *
* *
* by Tomi Blinnikka *
* *
* SimCity 1.1 Cheat *
* *
* Version 0.00a - 0.99a 18/4/1991 *
* *
* BUGS: Didn't work through DOS *
* *
* Version 1.00 19/4/1991 *
* *
* BUGS: No WB Stuff + some font stuff *
* *
* Version 1.01 26-27/4/1991 *
* *
* BUGS: No font stuff + WB Stuff didn't work *
* from directories *
* *
* Version 1.02 27-29/4/1991 *
* *
* BUGS: Doesn't work with CShell *
* *
* Version 1.03 30/4/1991 *
* *
* BUGS: Still little problems with CShell *
* *
* Version 1.04 01/5/1991 *
* *
* BUGS: Unknown *
* *
* Version 1.05 02/5/1991 *
* *
* BUGS: Unknown *
* *
* Version 1.06 18/5/1991 *
* *
* BUGS: No PoC DOS support *
* No PoC 2,3,4 player support *
* *
* Version 1.07 27/5/1991 *
* *
* BUGS: No PoC/OilImp/Oil Imperium DOS sup- *
* port *
* No PoC 2, 3, 4 player support *
* *
***********************************************
INCLUDE "JMPLibs.i"
INCLUDE "exec/types.i"
INCLUDE "libraries/dos.i"
INCLUDE "libraries/reqbase.i"
INCLUDE "workbench/startup.i"
INCLUDE "intuition/intuition.i"
INCLUDE "XREF:dos.xref"
INCLUDE "XREF:intuition.xref"
INCLUDE "XREF:exec.xref"
INCLUDE "XREF:gfx.xref"
INCLUDE "LWF:SimCC/SimCC2.0.i"
DReq: set 1
XREF Help
XREF HWin1
XDEF _IntuitionBase
XDEF _GfxBase
XDEF MenusOff
XDEF MenusOn
XDEF Kick
XDEF YOffset
XDEF Topaz
XDEF NoWin
XDEF CheckIDCMP
XDEF ClearMSGs
XDEF Window1IDCMP
XDEF wd_RPort
section SimCityCheat,CODE
Start: move.l a0,SCCAddress ;Get SimCity filename
move.l d0,SCCLength ;Get length
move.l #0,a1
lib Exec,FindTask
move.l d0,SCCTask
move.l d0,a4
move.l pr_CLI(a4),d0
bne Start1
bsr WBStart
Start1: openlib Dos,ShutDown
lib Dos,Output
move.l d0,_stdout
move.l pr_CLI(a4),d0
beq WBInput
;CLI Inputs
move.l SCCAddress(pc),a0
move.l SCCLength(pc),d0
clr.b -1(a0,d0.l) ;add null to end of filename
cmp.b #160,(a0)
beq StartMain
cmp.b #$0a,(a0)
beq StartMain
cmp.b #$0d,(a0)
beq StartMain
tst.b (a0)
bne GotFileName
jmp StartMain
WBStart: lea.l pr_MsgPort(a4),a0
lib Exec,WaitPort
lea.l pr_MsgPort(a4),a0
flib Exec,GetMsg
move.l d0,WBMsg
WBStart1: rts
GotFileName: move.w #1,Mode
cmp.b #"?",(a0)
beq CommandLineHelp
lea.l FRFile(pc),a1
bsr CopyText
tst.l d0
bne ShutDown
lea.l FRFile(pc),a0
move.l a0,d1
move.l #MODE_OLDFILE,d2
lib Dos,Open
move.l d0,SCCFile
bne DOSCheat
bsr SCCNotOpen
bra ShutDown
;Copies filename from one place to another
;Handles CShell and quotes
;
;INPUTS
;------
;a0 = Source
;a1 = Destination
;
;RETURNS
;-------
;d0 = #$00 if everything OK
;d0 = #$ff if need to goto ShutDown
;
;DEFAULTS
;--------
;a0 = SCCAddress from DOS
;a1 = FRFile from DOS
;
CopyText: cmp.b #'"',(a0)
beq Quotes
CopyTText: move.b (a0)+,(a1)+
cmp.b #'"',(a0)
beq Quotes
cmp.b #$20,(a0)
beq CopyTText1
cmp.b #160,(a0)
beq CopyTText1
cmp.b #$0a,(a0)
beq CopyTText1
cmp.b #$0d,(a0)
beq CopyTText1
cmp.b #$00,(a0)
bne CopyTText
CopyTText1: clr.b (a1)
clr.l d0
rts
Quotes: add.l #1,a0
Quotes1: move.b (a0)+,(a1)+
cmp.b #$00,(a0)
beq MismatchQuotes
cmp.b #160,(a0)
beq MismatchQuotes
cmp.b #$0a,(a0)
beq MismatchQuotes
cmp.b #$0d,(a0)
beq MismatchQuotes
cmp.b #'"',(a0)
bne Quotes1
Quotes2: clr.b (a1)
clr.l d0
rts
MismatchQuotes: print <"***Break",13,10,"Mismatched quotes",13,10>
move.l #$ff,d0
rts
;WB Inputs, start with opening NIL:
WBInput: lea.l NILName(pc),a0
move.l a0,d1
move.l #MODE_NEWFILE,d2
lib Dos,Open
move.l d0,NILFile
beq ShutDown
move.l NILFile(pc),_stdout
move.l #$00,d1
flib Dos,CurrentDir
move.l d0,OldLock
move.l WBMsg(pc),a2
move.l sm_NumArgs(a2),ArgsLeft
move.l sm_ArgList(a2),ArgList
WBInputIn: sub.l #1,ArgsLeft
add.l #8,ArgList
cmp.l #$00,ArgsLeft
beq WBInputOut
WBInput1: move.l ArgList(pc),a0
move.l wa_Name(a0),d1
move.l d1,a1
tst.b (a1)
bne WBInput2
WBInput1.1: move.l ArgList(pc),a0
move.l wa_Lock(a0),d1
beq WBInputIn
lib Dos,CurrentDir
move.l #$00,FRDir
bra WBInputIn
WBInput2: move.l d1,a0
lea.l FRFile(pc),a1
WBInput2.1: move.b (a0)+,(a1)+
cmp.b #$00,(a0)
bne WBInput2.1
clr.b (a1)
bra WBInput1.1
WBInputOut: move.l FRDir(pc),a0
lea.l FRPathName(pc),a1
cmp.b #$00,(a0)
beq WBInputOut1.1
WBInputOut1: move.b (a0)+,(a1)+
cmp.b #$00,(a0)
bne WBInputOut1
WBInputOut1.1: lea.l FRFile(pc),a0
WBInputOut2: move.b (a0)+,(a1)+
cmp.b #$00,(a0)
bne WBInputOut2
clr.b (a1)
StartMain: move.w #0,Mode
moveq.l #2,d0
move.l #2,d0
move.l $4,a6
lea.l _ReqLib,a1
jsr _LVOOpenLibrary(a6)
move.l d0,_ReqBase
beq NoReq
openlib Intuition,NoInt
openlib Gfx,NoGfx
;test for 2.0
move.l _IntuitionBase(pc),a6
move.w $14(a6),d0
cmp.w #36,d0
bcs StartWin1
;under 2.0
move.w #$01,Kick
move.l #$00,a0
flib Intuition,LockPubScreen
move.l d0,PubScreen
beq NoPub
;Get DragBar size
move.w #40,Win1YSize
move.l d0,a0
move.b $1e(a0),d0
add.b #1,d0
move.w #$00,Win1ZoomY
move.b d0,Win1ZoomY+1
add.b d0,Gad1YPos+1
move.b d0,YOffset
;use new OpenWindow (OpenWindowTagList)
lea.l NewWindow1(pc),a0
lea.l Win1TagList(pc),a1
flib Intuition,OpenWindowTagList
move.l d0,Window1
beq NoWin
move.l #$00,a0
move.l PubScreen(pc),a1
flib Intuition,UnlockPubScreen
move.l #$00,PubScreen
bra AddMenu1
;under 1.3
StartWin1: move.w #$00,Kick
add.w #10,Gad1YPos
lea.l NewWindow1(pc),a0
lib Intuition,OpenWindow
move.l d0,Window1
beq NoWin
;Add Menus to Window1
AddMenu1: move.l Window1(pc),a0
move.l wd_RPort(a0),Win1RP
lea.l Menu1(pc),a1
flib Intuition,SetMenuStrip
;Add gadget
lea.l AmountGad1(pc),a1
move.l Window1(pc),a0
move.l #$00,d0
flib Intuition,AddGadget
;Refresh gad list
lea.l AmountGad1(pc),a0
move.l Window1(pc),a1
move.l #$00,a2
flib Intuition,RefreshGadgets
;Activate string gad
lea.l AmountGad1(pc),a0
move.l Window1(pc),a1
move.l #$00,a2
flib Intuition,ActivateGadget
Window1IDCMP: move.l Window1(pc),a0
bsr CheckIDCMP
cmp.l #CLOSEWINDOW,d2
beq ShutDown
cmp.l #VANILLAKEY,d2
beq VanillaKeys
cmp.l #RAWKEY,d2
beq RawKeys
cmp.l #MENUPICK,d2
beq Win1Menus
cmp.l #MOUSEBUTTONS,d2
beq ActivateGad
bra Window1IDCMP
VanillaKeys: cmp.w #$1b,d3
beq ShutDown
cmp.w #"q",d3
beq ShutDown
cmp.w #"Q",d3
beq ShutDown
bra Window1IDCMP
RawKeys: cmp.w #$5f,d3
beq Help
bra Window1IDCMP
ActivateGad: cmp.l #IECODE_LBUTTON,d3
bne ActivateGadOut
ActivateGad1: lea.l AmountGad1(pc),a0
move.l Window1(pc),a1
move.l #$00,a2
lib Intuition,ActivateGadget
ActivateGadOut: bra Window1IDCMP
Win1Menus: bsr MenuNull
cmp.l #$00,d6
beq DoMenu1
cmp.l #$01,d6
beq DoMenu2
bra Window1IDCMP
DoMenu1: cmp.l #$00,d5
beq GetN
cmp.l #$01,d5
beq Help
cmp.l #$02,d5
beq About
cmp.l #$03,d5
beq ShutDown
bra Window1IDCMP
DoMenu2: cmp.l #$00,d5
beq DM2.1
bra Window1IDCMP
DM2.1: cmp.l #$00,d4
beq DM2.1.1
cmp.l #$01,d4
beq DM2.1.2
cmp.l #$02,d4
beq DM2.1.3
cmp.l #$03,d4
beq DM2.1.4
cmp.l #$04,d4
beq DM2.1.5
cmp.l #$05,d4
beq DM2.1.6
cmp.l #$06,d4
beq DM2.1.7
cmp.l #$07,d4
beq DM2.1.8
cmp.l #$08,d4
beq DM2.1.9
cmp.l #$09,d4
beq DM2.1.10
bra Window1IDCMP
DM2.1.1: move.w #$00,Game
bra SimAmount1
DM2.1.2: move.w #$01,Game
bra PoCAmount1
DM2.1.3: move.w #$02,Game
bra PoCAmount1
DM2.1.4: move.w #$03,Game
bra PoCAmount1
DM2.1.5: move.w #$04,Game
bra PoCAmount1
DM2.1.6: move.w #$05,Game
bra OilAmount1
DM2.1.7: move.w #$06,Game
bra OilAmount1
DM2.1.8: move.w #$07,Game
bra OilAmount1
DM2.1.9: move.w #$08,Game
bra OilAmount1
DM2.1.10: move.w #$09,Game
bra RRTAmount1
GetN: cmp.w #$00,Game
beq SimCheckAmount ;SimCity
cmp.w #$01,Game
beq PoCCheckAmount ;Ports of Call
cmp.w #$02,Game
beq PoCCheckAmount
cmp.w #$03,Game
beq PoCCheckAmount
cmp.w #$04,Game
beq PoCCheckAmount
cmp.w #$05,Game
beq OilCheckAmount ;Oil Imperium
cmp.w #$06,Game
beq OilCheckAmount
cmp.w #$07,Game
beq OilCheckAmount
cmp.w #$08,Game
beq OilCheckAmount
cmp.w #$09,Game
beq RRTCheckAmount ;RailRoad Tycoon
bra Window1IDCMP
SimCheckAmount: lea.l GetSimName(pc),a5
cmp.l #16777216,AmountInt
bcs GetN0.1
move.l Window1(pc),a0
move.l $2e(a0),a0
lib Intuition,DisplayBeep
SimAmount1: move.l Window1(pc),a0
lea.l WindowTitle1(pc),a1
move.l #-1,a2
lib Intuition,SetWindowTitles
move.l Window1(pc),a0
lea.l AmountGad1(pc),a1
lib Intuition,RemoveGadget
move.l #$31363737,AmountBuf
move.l #$37323135,AmountBuf+4
move.w #$0000,AmountBuf+8
move.l #16777215,AmountInt
bsr RefreshGad
tst.l WBMsg
bne SimAmount2
lea.l SimDiskName(pc),a0
lea.l FRDir(pc),a1
bsr CopyText
lea.l SimDiskName(pc),a0
lea.l FRPathName(pc),a1
bsr CopyText
SimAmount2: bra ActivateGad1
PoCCheckAmount: lea.l GetPoCName(pc),a5
cmp.l #$7fffff00,AmountInt
bcs GetN0.1
move.l Window1(pc),a0
move.l $2e(a0),a0
lib Intuition,DisplayBeep
PoCAmount1: move.l Window1(pc),a0
lea.l WindowTitle2(pc),a1
move.l #-1,a2
lib Intuition,SetWindowTitles
move.l Window1(pc),a0
lea.l AmountGad1(pc),a1
flib Intuition,RemoveGadget
move.l #$32313437,AmountBuf
move.l #$34383333,AmountBuf+4
move.w #$3931,AmountBuf+8
move.l #$7ffffeff,AmountInt
bsr RefreshGad
tst.l WBMsg
bne PoCAmount2
lea.l PoCDiskName(pc),a0
lea.l FRDir(pc),a1
bsr CopyText
lea.l PoCDiskName(pc),a0
lea.l FRPathName(pc),a1
bsr CopyText
PoCAmount2: bra ActivateGad1
OilCheckAmount: lea.l GetOilName(pc),a5
cmp.l #2147483648,AmountInt
bcs GetN0.1
move.l Window1(pc),a0
move.l $2e(a0),a0
lib Intuition,DisplayBeep
OilAmount1: move.l Window1(pc),a0
lea.l WindowTitle3(pc),a1
move.l #-1,a2
lib Intuition,SetWindowTitles
move.l Window1(pc),a0
lea.l AmountGad1(pc),a1
flib Intuition,RemoveGadget
move.l #$32313437,AmountBuf
move.l #$34383336,AmountBuf+4
move.w #$3437,AmountBuf+8
move.l #$7fffffff,AmountInt
bsr RefreshGad
tst.l WBMsg
bne OilAmount2
lea.l OilDiskName(pc),a0
lea.l FRDir(pc),a1
bsr CopyText
lea.l OilDiskName(pc),a0
lea.l FRPathName(pc),a1
bsr CopyText
OilAmount2: bra ActivateGad1
RRTCheckAmount: lea.l GetRRTName(pc),a5
cmp.l #32768,AmountInt ;Max Amount+1
bcs GetN0.1
cmp.b #$2d,AmountBuf ;Check for negative number
bne RRTAmount0.1
cmp.l #$FFFF8001,AmountInt
bcc GetN0.1
RRTAmount0.1: move.l Window1(pc),a0
move.l $2e(a0),a0
lib Intuition,DisplayBeep
RRTAmount1: move.l Window1(pc),a0
lea.l WindowTitle4(pc),a1
move.l #-1,a2
lib Intuition,SetWindowTitles
move.l Window1(pc),a0
lea.l AmountGad1(pc),a1
flib Intuition,RemoveGadget
move.l #$33323736,AmountBuf
move.w #$3700,AmountBuf+4
move.l #$7fff,AmountInt
bsr RefreshGad
tst.l WBMsg
bne OilAmount2
lea.l RRTDiskName(pc),a0
lea.l FRDir(pc),a1
bsr CopyText
lea.l RRTDiskName(pc),a0
lea.l FRPathName(pc),a1
bsr CopyText
RRTAmount2: bra ActivateGad1
GetN0.1: bsr MenusOff
move.l #FRQABSOLUTEXYM+FRQLOADINGM,d5
bsr FileRequester
tst.l d0
beq GetNOut
lea.l FRPathName(pc),a1
move.l a1,d1
cmp.b #$00,(a1)
beq GetNOut
move.l #MODE_OLDFILE,d2
lib Dos,Open
move.l d0,SCCFile
bne GetN1
bsr FileError
bra GetNOut
GetN1: bsr MenusOff
move.l Window1(pc),a0
lea.l Cheat?Txt(pc),a1
lea.l OKTxt(pc),a2
lea.l CancelTxt(pc),a3
move.l #$00,d0
move.l #$00,d1
move.l #$100,d2
move.l #$40,d3
lib Intuition,AutoRequest
cmp.l #00,d0
beq GetN1.1
bsr TestFile
GetN1.1: bsr MenusOn
GetN2: move.l SCCFile(pc),d1
lib Dos,Close
move.l #$00,SCCFile
GetNOut: bsr MenusOn
bra Window1IDCMP
RefreshGad: move.l Win1RP(pc),a1 ;clear page
move.l #$00,d0
move.l _GfxBase,a6
jsr _LVOSetAPen(a6)
move.l Win1RP(pc),a1
move.l #$05,d0
move.l #$0b,d1
add.b YOffset(pc),d1
move.l #298,d2
move.l #30,d3
add.b YOffset,d3
jsr _LVORectFill(a6)
cmp.w #$9,Game
bne RefreshGad1
move.l Win1RP(pc),a0
lea.l RRTSpecialTxt(pc),a1
move.l #$00,d0
move.l #$00,d1
move.b YOffset(pc),d1
lib Intuition,PrintIText
RefreshGad1: move.l Window1(pc),a0
lea.l AmountGad1(pc),a1
move.l #$00,d0
lib Intuition,AddGadget
lea.l AmountGad1(pc),a0
move.l Window1(pc),a1
move.l #$00,a2
flib Intuition,RefreshGadgets
rts
FileRequester: move.l a5,FRTitle
move.l d5,FRFlags
lea.l FileRequest1(pc),a0
lib Req,FileRequester
FROut: rts
About: bsr MenusOff
move.l Window1(pc),a0
lea.l AboutTxt1(pc),a1
move.l #$00,a2 ;positive text
lea.l OKTxt(pc),a3 ;a bit the wrong way around but...
move.l #$00,d0
move.l #$00,d1
move.l #$134,d2
move.l #$50,d3
lib Intuition,AutoRequest
bsr MenusOn
bra Window1IDCMP
Finished: move.l Window1(pc),a0
lea.l FinitoTxt1(pc),a1
move.l #$00,a2 ;positive text
lea.l OKTxt(pc),a3 ;a bit the wrong way around but...
move.l #$00,d0
move.l #$00,d1
move.l #$90,d2
move.l #$40,d3
lib Intuition,AutoRequest
rts
TestFile: cmp.w #$00,Game
beq TestForCity
cmp.w #$01,Game
beq TestForPoC
cmp.w #$02,Game
beq TestForPoC
cmp.w #$03,Game
beq TestForPoC
cmp.w #$04,Game
beq TestForPoC
cmp.w #$05,Game
beq TestForOil
cmp.w #$06,Game
beq TestForOil
cmp.w #$07,Game
beq TestForOil
cmp.w #$08,Game
beq TestForOil
cmp.w #$09,Game
beq TestForRRT
rts
TestForCity: move.l SCCFile(pc),d1
move.l #65,d2
move.l #-1,d3
lib Dos,Seek
move.l SCCFile(pc),d1
lea.l FileBuf(pc),a0
move.l a0,d2
move.l #$04,d3
flib Dos,Read
tst.l d0
bne TestForCity1
bsr FileError
rts
TestForCity1: move.l FileBuf(pc),d0
cmp.l #$43495459,d0
bne TestForCity2
bsr CheatGame
rts
TestForCity2: cmp.w #1,Mode
beq TestForCity3
move.l Window1(pc),a0
lea.l WrongTxt1(pc),a1
lea.l OKTxt(pc),a2
lea.l CancelTxt(pc),a3
move.l #$00,d0
move.l #$00,d1
move.l #$100,d2
move.l #$40,d3
lib Intuition,AutoRequest
cmp.l #00,d0
beq Seek_Out
bsr CheatGame
rts
TestForCity3: print <"***Break",13,10,"This is not a SimCity city-file, exiting!",13,10>,_stdout
Seek_Out: rts
TestForPoC: move.l SCCFile(pc),d1
move.l #00,d2
move.l #-1,d3
lib Dos,Seek
move.l SCCFile(pc),d1
lea.l FileBuf(pc),a0
move.l a0,d2
move.l #$04,d3
flib Dos,Read
tst.l d0
bne TestForPoC1
bsr FileError
rts
TestForPoC1: move.l FileBuf(pc),d0
cmp.l #$52444b20,d0
bne TestForCity2
bsr CheatGame
rts
TestForOil: move.l SCCFile(pc),d1
move.l #00,d2
move.l #-1,d3
lib Dos,Seek
move.l SCCFile(pc),d1
lea.l FileBuf(pc),a0
move.l a0,d2
move.l #$0a,d3
flib Dos,Read
tst.l d0
bne TestForOil1
bsr FileError
rts
TestForOil1: lea.l FileBuf(pc),a0
cmp.l #"Blac",(a0)
bne TestForCity2
cmp.l #$6b20476f,4(a0)
bne TestForCity2
cmp.w #"ld",8(a0)
bne TestForCity2
bsr CheatGame
rts
TestForRRT: move.l SCCFile(pc),d1
move.l #13072,d2
move.l #-1,d3
lib Dos,Seek
move.l SCCFile(pc),d1
lea.l FileBuf(pc),a0
move.l a0,d2
move.l #$04,d3
flib Dos,Read
tst.l d0
bne TestForRRT1
bsr FileError
rts
TestForRRT1: lea.l FileBuf(pc),a0
cmp.l #$302d342d,(a0)
bne TestForCity2
bsr CheatGame
rts
CheatGame: cmp.w #$00,Game ;Sim
beq CheatCity
cmp.w #$01,Game ;PoC
bne CheatGame1
move.l #103,d2
bra CheatPoC
CheatGame1: cmp.w #$02,Game
bne CheatGame2
move.l #103,d2
bra CheatPoC
CheatGame2: cmp.w #$03,Game
bne CheatGame3
move.l #103,d2
bra CheatPoC
CheatGame3: cmp.w #$04,Game
bne CheatGame4
move.l #103,d2
bra CheatPoC
CheatGame4: cmp.w #$05,Game ;Oil
bne CheatGame5
move.l #7495,d2
bra CheatOil
CheatGame5: cmp.w #$06,Game
bne CheatGame6
move.l #8545,d2
bra CheatOil
CheatGame6: cmp.w #$07,Game
bne CheatGame7
move.l #9595,d2
bra CheatOil
CheatGame7: cmp.w #$08,Game
bne CheatGame8
move.l #10645,d2
bra CheatOil
CheatGame8: cmp.w #$09,Game ;RRT
bne CheatGame9
move.l #14152,d2
bra CheatRRT
CheatGame9: rts
CheatCity: move.l SCCFile(pc),d1
move.l #3108,d2
move.l #-1,d3
lib Dos,Seek
move.l SCCFile(pc),d1
lea.l AmountInt(pc),a0
move.l a0,d2
move.l #$04,d3
flib Dos,Write
cmp.w #1,Mode
bne CheatCity1
print <"Your city now has $16, 777 215.",13,10>,_stdout
rts
CheatCity1: bsr Finished
rts
CheatPoC: move.l SCCFile(pc),d1
move.l #-1,d3
lib Dos,Seek
move.l SCCFile(pc),d1
lea.l AmountInt(pc),a0
move.l a0,d2
move.l #$04,d3
flib Dos,Write
bsr Finished
rts
CheatOil: move.l SCCFile(pc),d1
move.l #-1,d3
lib Dos,Seek
move.l SCCFile(pc),d1
lea.l AmountInt(pc),a0
move.l a0,d2
move.l #$04,d3
flib Dos,Write
bsr Finished
rts
CheatRRT: move.l SCCFile(pc),d1
move.l #-1,d3
lib Dos,Seek
move.l SCCFile(pc),d1
move.l AmountInt(pc),d2
swap d2
move.l d2,AmountInt
lea.l AmountInt(pc),a0
move.l a0,d2
move.l #$02,d3
flib Dos,Write
bsr Finished
rts
DOSCheat: bsr TestFile
bra ShutDown
NoReq: print <"You need req.library v2.5 or higher!",13,10>,_stdout
bra ShutDown
NoInt: print <"Can't open intuition.library!",13,10>,_stdout
bra ShutDown
NoGfx: print <"Can't open graphics.library!",13,10>,_stdout
bra ShutDown
NoWin: print <"Can't open Window!",13,10>,_stdout
bra ShutDown
NoPub: print <"Can't lock PubScreen!",13,10>,_stdout
bra ShutDown
ShutDown: tst.l PubScreen
beq ShutDown9000
move.l #$00,a0
move.l PubScreen(pc),a1
lib Intuition,UnlockPubScreen
move.l #$00,PubScreen
ShutDown9000: tst.l SCCFile
beq ShutDown8000
move.l SCCFile(pc),d1
lib Dos,Close
move.l #$00,SCCFile
ShutDown8000: tst.l NILFile
beq ShutDown6000
move.l NILFile(pc),d1
lib Dos,Close
move.l #$00,NILFile
ShutDown6000: tst.l HWin1
beq ShutDown5000
move.l HWin1(pc),a0
bsr ClearMSGs
move.l #$00,HWin1
ShutDown5000: tst.l Window1
beq ShutDown4000
move.l Window1(pc),a0
lib Intuition,ClearMenuStrip
move.l Window1(pc),a0
bsr ClearMSGs
move.l #$00,Window1
ShutDown4000:
ShutDown3000: tst.l _ReqBase
beq ShutDown2001
lea.l FileRequest1(pc),a0
lib Req,PurgeFiles
;Check if launched from WB
ShutDown2001: move.l SCCTask,a4
move.l pr_CLI(a4),d0
beq ShutDownWB
ShutDown2000: closlib Dos
closlib Req
closlib Intuition
closlib Gfx
ShutDownOut: move.l #RETURN_OK,d0
rts
ShutDownWB: move.l SCCTask(pc),a4 ;WAZ IZ FOR?
lib Exec,Forbid
move.l WBMsg(pc),a1
flib Exec,ReplyMsg
move.l OldLock(pc),d1
lib Dos,CurrentDir
bra ShutDown2000
INCLUDE "LWF:SimCC/DosError.i"
INCLUDE "LWF:SimCC/SCCCommandLineHelp.i"
MenusOn: lea.l Menu1(pc),a1
move.l Window1(pc),a0
lib Intuition,SetMenuStrip
rts
MenusOff: move.l Window1(pc),a0
lib Intuition,ClearMenuStrip
rts
MenuNull: move.l d3,d6
ror.l #5,d6
lsr.l #8,d6
lsr.l #8,d6
lsr.l #8,d6
lsr.l #3,d6
move.l d3,d5
ror.l #5,d5
ror.l #6,d5
lsr.l #8,d5
lsr.l #8,d5
lsr.l #8,d5
lsr.l #2,d5
move.l #$00,d4
move.w d3,d4
lsr.l #5,d4
lsr.l #6,d4
rts
CheckIDCMP: move.l $4,a6 ;made this a SubRoutine...
move.l $56(a0),a2 ;Give it the window structure in a0
move.l #0,d1
move.b $0f(a2),d1
move.l #0,d0
bset.l d1,d0
jsr _LVOWait(a6)
GetMsg1: move.l a2,a0
jsr _LVOGetMsg(a6)
tst.l d0
beq GetMsg2
move.l d0,a1
move.l $14(a1),d2 ;answers with Class in d2,
move.w $18(a1),d3 ;Code in d3 and
move.w $1a(a1),a4 ;Qualifier in a4
move.l $1c(a1),a5 ;IAddress in a5
jsr _LVOReplyMsg(a6)
bra GetMsg1
GetMsg2: move.l #-1,d0
rts
ClearMSGs: move.l a0,d0 ;Give it the window structure in a0
tst.l d0
beq ClearMsg3
move.l a0,a3
lib Exec,Forbid
move.l $56(a3),a2
ClearMsg1: move.l a2,a0
lib Exec,GetMsg
tst.l d0
beq ClearMsg2
move.l d0,a1
flib Exec,ReplyMsg
bra ClearMsg1
ClearMsg2: move.l a3,a0
lib Intuition,CloseWindow
lib Exec,Permit
ClearMsg3: rts
ds.l 0
;--------------------Structures------------------
;Display stuff
Window1 dc.l 0
Win1RP dc.l 0
PubScreen dc.l 0
YOffset dc.b 8,0
;Library stuff (well what's needed anymore)
libnames
;Task stuff
SCCTask dc.l 0
;WB Stuff
WBMsg dc.l 0
ArgList dc.l 0
ArgsLeft dc.l 0
OldLock dc.l 0
;File stuff
_stdout dc.l 0
SCCAddress dc.l 0
SCCLength dc.l 0
SCCFile dc.l 0
FileBuf dc.l $ffffffff
NILName: dc.b "NIL:",0
ds.l 0
NILFile: dc.l 0
;req.lib stuff/requester stuff
INCLUDE "LWF:SimCC/SCCFileRequester.i"
;Other stuff XIV
Mode dc.w 0 ;0=Intuition, 1=dos
Kick dc.w 0 ;0=1.3, 1=2.0+
;0 = SimCity
;
;1 = PoC Player #1
;2 = PoC Player #2
;3 = PoC Player #3
;4 = PoC Player #4
;
;5 = Oil Player #1
;6 = Oil Player #2
;7 = Oil Player #3
;8 = Oil Player #4
;9 = RailRoad Tycoon
Game dc.w 0
;Texts, Part I
SCCName dc.b "SimCity 1.1 cheat by Tomi Blinnikka",0
PoCName dc.b "Ports of Call cheat by Tomi Blinnikka",0
GetSimName dc.b "Get SimCity city filename...",0
GetPoCName dc.b "Get Ports of Call game filename...",0
GetOilName dc.b "Get Oil Imperium game filename...",0
GetRRTName dc.b "Get RailRoad Tycoon game filename...",0
PositiveText1 dc.b "Yes",0
NegativeText1 dc.b "No",0
ds.l 0
;Font thing
Topaz dc.l FontName
dc.w 8
dc.b 0
dc.b 0
FontName dc.b "topaz.font",0
ds.l 0
;New screen & new window structures
NewWindow1 dc.w 200,31 ;X,Y POS
dc.w 302 ;WIDTH
Win1YSize dc.w 43 ;HEIGHT
dc.b 0,1 ;PENS
dc.l MOUSEBUTTONS+CLOSEWINDOW+VANILLAKEY+RAWKEY+MENUPICK ;IDCMP FLAGS
dc.l WINDOWDRAG+WINDOWDEPTH+WINDOWCLOSE+ACTIVATE ;FLAGS
dc.l 0,0 ;GADGETS, CHECKMARK
dc.l WindowTitle1 ;TITLE
dc.l 0 ;SCREEN ADDRESS
dc.l 0 ;BITMAP
dc.w 192
dc.w 11,300,43 ;MINIMUM SIZE
dc.w WBENCHSCREEN ;TYPE
Win1TagList dc.l WA_AutoAdjust,0
dc.l WA_InnerWidth,300
dc.l WA_InnerHeight,30
dc.l WA_Zoom,Win1ZoomXY
dc.l TAG_DONE,0
Win1ZoomXY dc.w 0,20,192
Win1ZoomY dc.w 11
WindowTitle1 dc.b "SimCity cheat",0
WindowTitle2 dc.b "Ports of Call cheat",0
WindowTitle3 dc.b "Oil Imperium cheat",0
WindowTitle4 dc.b "RailRoad Tycoon cheat",0
ds.l 0
;Gadget structures
INCLUDE "LWF:SimCC/SCCGads.i"
;Now for all the imagery and borders etc.
GadgetBorder1 dc.w -1 ;Initial offsets from the origin
dc.w -2 ;LeftEdge and TopEdge
dc.b 1,2 ;Pens
dc.b 1 ;Draw Mode
dc.b 5 ;Line Count (XY)
dc.l BorderXY1 ;XY's
dc.l 0 ;Next Border
dc.b 0
ds.l 0
BorderXY1 dc.w 0,0
dc.w 90,0
dc.w 90,11
dc.w 0,11
dc.w 0,0
dc.b 0
ds.l 0
;Menus
INCLUDE "LWF:SimCC/SCCMenus.i"
;Texts, Part II
AboutTxt1: dc.b 3,1 ;PENS
dc.w 0 ;MODE
dc.w 10,10 ;LEFT+TOPEDGE
dc.l Topaz ;FONT
dc.l AboutText1 ;TEXT
dc.l AboutTxt2 ;NEXTTEXT
ds.l 0
AboutTxt2: dc.b 3,1 ;PENS
dc.w 4 ;MODE
dc.w 10,20 ;LEFT+TOPEDGE
dc.l Topaz ;FONT
dc.l AboutText2 ;TEXT
dc.l AboutTxt3 ;NEXTTEXT
ds.l 0
AboutTxt3: dc.b 3,1 ;PENS
dc.w 4 ;MODE
dc.w 10,30 ;LEFT+TOPEDGE
dc.l Topaz ;FONT
dc.l AboutText3 ;TEXT
dc.l AboutTxt4 ;NEXTTEXT
ds.l 0
AboutTxt4: dc.b 3,1 ;PENS
dc.w 4 ;MODE
dc.w 10,50 ;LEFT+TOPEDGE
dc.l Topaz ;FONT
dc.l AboutText4 ;TEXT
dc.l 0 ;NEXTTEXT
ds.l 0
dc.b "$VER: SimCheat 1.07, (C)opyright Tomi Blinnikka.",0
AboutText1: dc.b "SimCity 1.1 cheat program v1.07",0
AboutText2: dc.b " by",0
AboutText3: dc.b " Tomi Blinnikka",0
AboutText4: dc.b " (C)opyright 1991-92",0
ds.l 0
FinitoTxt1: dc.b 3,1 ;PENS
dc.w 4 ;MODE
dc.w 10,20 ;LEFT+TOPEDGE
dc.l Topaz ;FONT
dc.l FinitoText1 ;TEXT
dc.l 0 ;NEXTTEXT
ds.l 0
FinitoText1: dc.b "Finished.",0
ds.l 0
OKTxt: dc.b 3,1 ;PENS
dc.w 0 ;MODE
dc.w 6,3 ;LEFT+TOPEDGE
dc.l Topaz ;FONT
dc.l OKText1 ;TEXT
dc.l 0 ;NEXTTEXT
ds.l 0
OKText1: dc.b "OK",0
ds.l 0
CancelTxt: dc.b 3,1 ;PENS
dc.w 0 ;MODE
dc.w 6,3 ;LEFT+TOPEDGE
dc.l Topaz ;FONT
dc.l CancelText1 ;TEXT
dc.l 0 ;NEXTTEXT
ds.l 0
CancelText1: dc.b "CANCEL!",0
ds.l 0
Cheat?Txt: dc.b 3,1 ;PENS
dc.w 4 ;MODE
dc.w 10,10 ;LEFT+TOPEDGE
dc.l Topaz ;FONT
dc.l CheatText1 ;TEXT
dc.l 0 ;NEXTTEXT
ds.l 0
CheatText1: dc.b "Cheat on this file?",0
ds.l 0
WrongTxt1: dc.b 3,1 ;PENS
dc.w 4 ;MODE
dc.w 10,10 ;LEFT+TOPEDGE
dc.l Topaz ;FONT
dc.l FWrongText1 ;TEXT
dc.l 0 ;NEXTTEXT
ds.l 0
FWrongText1: dc.b "Incorrect file! Try anyway?",0
ds.l 0
Win1Txt1: dc.b 1,2 ;PENS
dc.w 0 ;MODE
dc.w -16,-18 ;LEFT+TOPEDGE
dc.l Topaz ;FONT
dc.l Win1Text1 ;TEXT
dc.l 0 ;NEXTTEXT
ds.l 0
Win1Text1: dc.b "Amount of money?",0
ds.l 0
RRTSpecialTxt: dc.b 1,2 ;PENS
dc.w 0 ;MODE
dc.w 205,21 ;LEFT+TOPEDGE
dc.l Topaz ;FONT
dc.l RRTSText1 ;TEXT
dc.l 0 ;NEXTTEXT
ds.l 0
RRTSText1: dc.b "000",0
ds.l 0
; section SCC_ChipStuff,DATA,CHIP
END